In the large-scale networks of today, switches are used on a regular basis to steer information from one location or site to another. In a typical switch, there are a plurality of line modules, control modules, timing modules, and switching modules. These various modules cooperate to carry out the switching and control functions of the switch. More specifically, the line modules carry information into and out of the switch, while the switching modules determine the interconnectivity between the line modules. By properly configuring the switching modules, any port of any line module may be coupled to any other port of any line module. Thus, the switching modules enable information to be switched or steered from any ingress line module port to any egress line module port.
The timing modules control the timing of the transfer of information from the ingress line module port to the egress line module port. Basically, the timing modules synchronize the ingress line module port and the egress line module port to ensure that information is transferred properly from one to the other. The control modules help to coordinate the interaction between the various other modules. While each module may implement its own control logic and may operate in many situations without the aid of the control modules, the control modules act as centralized mechanisms for coordinating the activities and communications between the various other modules.
In order to carry out all of the switching and control functions of the switch, the various modules need to communicate with each other. For example, the line modules may need to exchange information with one another to keep apprised of the overall state of the switch. Also, the line modules may need to communicate with the control modules to obtain coordination information therefrom. To enable the various modules to communicate with each other, a switch is typically provided with an underlying communication system. This communication system connects all of the modules together, and enables any module on the switch to communicate with any other module on the switch. Using this system, the various modules communicate with each other to carry out all of the necessary switching and control functions.
In many implementations, a switch is required to maintain high availability. High availability means that the switch maintains normal operation a high percentage of the time, even in the face of various errors/failures. In some implementations, the switch cannot have any more than a few minutes of downtime each year. To maintain such high availability, the switch has to be quite tolerant of errors and failures. As noted above, the various modules implement the switching and control functions of the switch using the underlying communication system. That being the case, in order to maintain high availability in the overall switch, the underlying communication system also has to be highly available. Unfortunately, the communication systems that are currently available fail to satisfactorily meet this criterion. For one thing, many systems fail to provide the fault tolerance necessary for maintaining high availability. In addition, in the systems that do provide some degree of fault tolerance, the fault tolerance is gained at the expense of increased inefficiency in other parts of the switch. These and other shortcomings exist in the currently available systems. Overall, the currently available systems fail to satisfactorily meet the high availability requirement demanded by many implementations. As a result, a need for an improved high availability communication system exists.